package com.feiwo.nonego.rpc.proxy.api;

import com.feiwo.nonego.rpc.proxy.api.config.ProxyConfig;
import com.feiwo.nonego.rpc.spi.annotation.SPI;

/**
 *
 *
 * @author feiwo 2025-08-08
 */
@SPI
public interface ProxyFactory {

    /**
     * 获取代理对象
     * @param clazz 目标对象类
     * @return 代理对象
     * @param <T> 目标对象类
     */
    <T> T getProxy(Class<T> clazz);

    /**
     * 初始化代理工厂
     * @param proxyConfig 代理配置
     * @param <T> 目标对象类
     */
    default <T> void init(ProxyConfig<T> proxyConfig){}
}
